package com.cesce.batch.cobros.validation;


import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springmodules.validation.valang.functions.AbstractFunction;
import org.springmodules.validation.valang.functions.Function;

import com.cesce.batch.cobros.exceptions.CobComunicadoValidationException;
import com.cesce.batch.cobros.reverse.Cobcomunicados;
import com.cesce.batch.cobros.reverse.Cobformatofechacobros;
import com.cesce.batch.cobros.reverse.Cobparametros;
import com.cesce.batch.cobros.reverse.Cobregistro;


public class ValidacionFormatoFecha extends AbstractFunction {
	
		protected final Log logger = LogFactory.getLog(getClass());
		

		Boolean validacion= Boolean.FALSE;

	    public ValidacionFormatoFecha(Function[] arguments, int line, int column) {
	        super(arguments, line, column);
	        definedExactNumberOfArguments(2);
	    }
	    //throw new CobComunicadoValidationException("Posicion de la fecha de cobro (string) no definida o importe string vacio o nulo");
	    //throw new CobComunicadoValidationException("Error al extraer el formato de la frecha de cobros");
		//throw new CobComunicadoValidationException("Fecha de cobro no cumple el formato esperado:" + fechaDeCobro);	
	    
		@SuppressWarnings("unchecked")
		protected Object doGetResult(Object target) throws Exception {
			
			Date fechaDate=null;
			String fechaCobro= (String) getArguments()[0].getResult(target);
			BigDecimal idRegistro = (BigDecimal) getArguments()[1].getResult(target);
			Cobparametros params = Cobregistro.findCobregistro(idRegistro).getIdcodparametro();
			Cobformatofechacobros cobFormatoFechacobros = params.getIdformatofechacobro();
			if (params.getPosicionfechacobro().intValue()!=-1) {
				if (cobFormatoFechacobros != null) {
					SimpleDateFormat formatoFechaCobros = new SimpleDateFormat(cobFormatoFechacobros.getFormatofechacobro().replace("m", "M"));
					fechaDate=formatoFechaCobros.parse(fechaCobro);
					}
				}
			return fechaDate;
		}

}

